package vista;

import java.sql.ResultSet;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;
import modelo.Especialidad;
import vista.modelo.OperacionesVarias;

/**
 *
 * @author victor
 */
public class iFrmEspecialidad extends javax.swing.JInternalFrame {

    Especialidad eEspe = new Especialidad();
    DefaultTableModel tablaModelo = new DefaultTableModel();
    ResultSet rsEsp = null;

    public iFrmEspecialidad() {
        tablaModelo.addColumn("ID");
        tablaModelo.addColumn("ESPECIALIDAD");

        initComponents();
        OperacionesVarias.cerrarVentanaEscape(this);
        dgEspecialidad.getColumnModel().getColumn(0).setMaxWidth(0);
        dgEspecialidad.getColumnModel().getColumn(0).setMinWidth(0);
        dgEspecialidad.getColumnModel().getColumn(0).setPreferredWidth(0);
        //dgEspecialidad.getColumn("id").setWidth(0);   
        showEspecialidades();
    }

    @SuppressWarnings("unchecked")
    // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
    private void initComponents() {

        btnCerrar = new javax.swing.JButton();
        btnGuardar = new javax.swing.JButton();
        txtEspecialidad = new javax.swing.JTextField();
        jLabel1 = new javax.swing.JLabel();
        jScrollPane1 = new javax.swing.JScrollPane();
        dgEspecialidad = new javax.swing.JTable();
        btnEliminar = new javax.swing.JButton();
        btnActualizar = new javax.swing.JButton();

        setClosable(true);
        setTitle("ESPECIALIDADES MEDICAS");
        setFrameIcon(new javax.swing.ImageIcon(getClass().getResource("/jpgs/DOCTORLIST.png"))); // NOI18N
        setVisible(true);

        btnCerrar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpgs/agt_home.png"))); // NOI18N
        btnCerrar.setText("Cerrar");
        btnCerrar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnCerrarActionPerformed(evt);
            }
        });

        btnGuardar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpgs/filesave.png"))); // NOI18N
        btnGuardar.setText("Guardar");
        btnGuardar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnGuardarActionPerformed(evt);
            }
        });

        txtEspecialidad.addKeyListener(new java.awt.event.KeyAdapter() {
            public void keyReleased(java.awt.event.KeyEvent evt) {
                txtEspecialidadKeyReleased(evt);
            }
        });

        jLabel1.setText("Especialidad:");

        dgEspecialidad.setModel(tablaModelo);
        jScrollPane1.setViewportView(dgEspecialidad);

        btnEliminar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpgs/delete.png"))); // NOI18N
        btnEliminar.setText("Eliminar");
        btnEliminar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnEliminarActionPerformed(evt);
            }
        });

        btnActualizar.setIcon(new javax.swing.ImageIcon(getClass().getResource("/jpgs/refresh.png"))); // NOI18N
        btnActualizar.setText("Editar");
        btnActualizar.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                btnActualizarActionPerformed(evt);
            }
        });

        javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane());
        getContentPane().setLayout(layout);
        layout.setHorizontalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(layout.createSequentialGroup()
                .addContainerGap()
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
                    .addGroup(layout.createSequentialGroup()
                        .addComponent(jLabel1, javax.swing.GroupLayout.PREFERRED_SIZE, 100, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGap(1, 1, 1)
                        .addComponent(txtEspecialidad, javax.swing.GroupLayout.PREFERRED_SIZE, 210, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                        .addComponent(btnGuardar, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE))
                    .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.TRAILING, false)
                        .addComponent(jScrollPane1, javax.swing.GroupLayout.PREFERRED_SIZE, 423, javax.swing.GroupLayout.PREFERRED_SIZE)
                        .addGroup(layout.createSequentialGroup()
                            .addComponent(btnActualizar, javax.swing.GroupLayout.PREFERRED_SIZE, 113, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED)
                            .addComponent(btnEliminar, javax.swing.GroupLayout.PREFERRED_SIZE, 114, javax.swing.GroupLayout.PREFERRED_SIZE)
                            .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)
                            .addComponent(btnCerrar, javax.swing.GroupLayout.PREFERRED_SIZE, 98, javax.swing.GroupLayout.PREFERRED_SIZE))))
                .addContainerGap(23, Short.MAX_VALUE))
        );
        layout.setVerticalGroup(
            layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING)
            .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup()
                .addGap(21, 21, 21)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(jLabel1)
                    .addComponent(txtEspecialidad, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE)
                    .addComponent(btnGuardar))
                .addGap(18, 18, 18)
                .addComponent(jScrollPane1, javax.swing.GroupLayout.DEFAULT_SIZE, 394, Short.MAX_VALUE)
                .addGap(18, 18, 18)
                .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE)
                    .addComponent(btnEliminar)
                    .addComponent(btnActualizar)
                    .addComponent(btnCerrar))
                .addGap(28, 28, 28))
        );

        pack();
    }// </editor-fold>//GEN-END:initComponents

    private void showEspecialidades() {
        try {
            int c = tablaModelo.getRowCount();
            for (int i = 0; i < c; i++) {
                tablaModelo.removeRow(0);
            }
            for (Especialidad cls : eEspe.selectEspecialidades()) {
                Object[] fila = {
                    cls.getId(),
                    cls.getEspecialidad()
                };
                tablaModelo.addRow(fila);
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Se ha producido la excepcion: \n" + ex.getMessage(), "Mostrar especialidades", JOptionPane.ERROR_MESSAGE);
        }
    }

    private Especialidad getEspecialidad() {
        Especialidad esp = new Especialidad();
        esp.setEspecialidad(txtEspecialidad.getText().toUpperCase().trim());
        return esp;
    }

    private void guardarEspecialidad() {
        try {
            if (txtEspecialidad.getText().trim().length() != 0) {
                if (eEspe.validaUnicidad(txtEspecialidad.getText().trim().toUpperCase()) == 1) {
                    JOptionPane.showMessageDialog(null, "Ya existe una especialidad registrada con el nombre introducido \nIngrese un nombre de especialidad diferente ...", "Guardar", JOptionPane.WARNING_MESSAGE);
                    txtEspecialidad.requestFocus();
                    txtEspecialidad.setSelectionStart(0);
                    txtEspecialidad.setSelectionEnd(txtEspecialidad.getText().trim().length());
                    return;
                }
                if (eEspe.insertEspecialidad(this.getEspecialidad()) == 1) {
                    showEspecialidades();
                    txtEspecialidad.setText("".trim());
                    JOptionPane.showMessageDialog(null, "Los datos se han guardado correctamente ...", "Guardar", JOptionPane.INFORMATION_MESSAGE);
                    txtEspecialidad.requestFocus();
                    txtEspecialidad.setSelectionStart(0);
                    txtEspecialidad.setSelectionEnd(txtEspecialidad.getText().trim().length());
                } else {
                    JOptionPane.showMessageDialog(null, "Los datos introducidos no se han podido guardar ...", "Guardar", JOptionPane.WARNING_MESSAGE);
                }
            } else {
                JOptionPane.showMessageDialog(null, "Aún no ha ingresado la especialidad ...", "Guardar", JOptionPane.WARNING_MESSAGE);
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Se ha producido la excepcion: \n" + ex.getMessage(), "Guardar", JOptionPane.ERROR_MESSAGE);
        }

    }

    private void btnCerrarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnCerrarActionPerformed
        this.dispose();
    }//GEN-LAST:event_btnCerrarActionPerformed

    private void btnGuardarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnGuardarActionPerformed
        guardarEspecialidad();
    }//GEN-LAST:event_btnGuardarActionPerformed

    private void btnEliminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnEliminarActionPerformed
        try {
            if (dgEspecialidad.getSelectedRow() != -1) {
                if (JOptionPane.showConfirmDialog(null, "¿Realmente desea eliminar la especialidad seleccionada?", "Eliminar", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == 0) {
                    int idfila = Integer.valueOf(dgEspecialidad.getValueAt(dgEspecialidad.getSelectedRow(), 0).toString());
                    if (eEspe.deleteEspecialidad(idfila) == 1) {
                        showEspecialidades();
                        JOptionPane.showMessageDialog(null, "Datos eliminados correctamente ...", "Eliminar", JOptionPane.INFORMATION_MESSAGE);
                    }
                }
            } else {
                JOptionPane.showMessageDialog(null, "Para eliminar debe seleccionar una especialidad", "Eliminar", JOptionPane.WARNING_MESSAGE);
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Ha ocurrido un error:\n" + ex.getMessage() + "\nSi el problema persiste consulte al usuario administrador", "Cancelar reservación", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_btnEliminarActionPerformed

    private Especialidad getUpEspecialidad() throws Exception {
        Especialidad esp = new Especialidad();
        int idfila = Integer.valueOf(dgEspecialidad.getValueAt(dgEspecialidad.getSelectedRow(), 0).toString());
        esp.setId(idfila);
        esp.setEspecialidad(dgEspecialidad.getValueAt(dgEspecialidad.getSelectedRow(), 1).toString().toUpperCase().trim());
        return esp;
    }
    private void txtEspecialidadKeyReleased(java.awt.event.KeyEvent evt) {//GEN-FIRST:event_txtEspecialidadKeyReleased
        if (evt.getKeyCode() == 10) {
            if (txtEspecialidad.getText().trim().length() == 0) {
                JOptionPane.showMessageDialog(null, "Aún no ha ingresado la especialidad ...", "Guardar", JOptionPane.WARNING_MESSAGE);
            } else {
                guardarEspecialidad();
            }
        }
    }//GEN-LAST:event_txtEspecialidadKeyReleased

    private void btnActualizarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnActualizarActionPerformed
        try {
            if (dgEspecialidad.getSelectedRow() != -1) {
                if (JOptionPane.showConfirmDialog(null, "¿Realmente desea modificar la especialidad seleccionada?", "Eliminar", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE) == 0) {
                    if (eEspe.updateEspecialidad(getUpEspecialidad()) == 1) {
                        showEspecialidades();
                        JOptionPane.showMessageDialog(null, "Datos actualizados correctamente ...", "Actualizar", JOptionPane.INFORMATION_MESSAGE);
                    }
                }
            } else {
                JOptionPane.showMessageDialog(null, "Para Actualizar debe seleccionar una especialidad", "Actualizar", JOptionPane.WARNING_MESSAGE);
            }
        } catch (Exception ex) {
            JOptionPane.showMessageDialog(null, "Ha ocurrido un error:\n" + ex.getMessage() + "\nSi el problema persiste consulte al usuario administrador", "Cancelar reservación", JOptionPane.ERROR_MESSAGE);
        }
    }//GEN-LAST:event_btnActualizarActionPerformed
    // Variables declaration - do not modify//GEN-BEGIN:variables
    private javax.swing.JButton btnActualizar;
    private javax.swing.JButton btnCerrar;
    private javax.swing.JButton btnEliminar;
    private javax.swing.JButton btnGuardar;
    private javax.swing.JTable dgEspecialidad;
    private javax.swing.JLabel jLabel1;
    private javax.swing.JScrollPane jScrollPane1;
    private javax.swing.JTextField txtEspecialidad;
    // End of variables declaration//GEN-END:variables
}
